查看原文
其他

如何上传Android库项目到JCenter

jzman 躬行之 2022-08-26

上篇文章实现了一个日期时间选择器,github 地址如下:

1https://github.com/jzmanu/MDatePickerSample

直接使用 gradle 依赖即可:

1compile 'com.manu:MDatePicker:1.0.0'

也可以查看上篇文章的详细介绍或在文末点击阅读原文查看,这里顺便将其开源出来,顺便点个 star 支持一下,下面将介绍如何上传 Android 库项目到 JCenter 上供自己或其他人使用,具体参考如下:

  1. 注册账号

  2. 创建仓库

  3. 库项目配置

  4. 上传库项目

  5. 添加到JCenter

  6. 遇到的问题

如果想上传库项目到 maven,可以参考之前写的一篇文章:

注册账号

注册一个 Bintray 账号,选择注册个人类型,为什么要特意说明一下,这里大多数人第一次注册的时候都会注册成企业账号,企业账号貌似不能将库添加到 JCenter 中,此外企业版肯定在试用期之外是需要收费的,注册地址如下:

1//个人账号
2https://bintray.com/signup/oss
3//企业账号
4https://bintray.com/

创建仓库

这里上传的时候使用的时 bintray-release 插件,该插件如果在上传的时候不使用 repo 指定仓库名称,则会将项目上传到名为 maven 的库中,这里又有一个小坑,这个名为 maven 的仓库需要手动创建,为了方便就创建一个名为 maven 的仓库,登录自己的账号,选择
Add New Repository 创建仓库:

创建仓库

如果没有创建则会报如下错误:

1* What went wrong:
2Execution failed for task ':dashview:bintrayUpload'.
3> Could not create package 'smalllee/maven/dashview': HTTP/1.1 404 Not Found [message:Repo 'maven' was not found]

然后,再该仓库中创建一个和 artifactId 名称一样的包:

创建包

以上是将库项目上传到 JCenter 的准备工作,下面来看一看项目这边是如何进行配置。

库项目配置

创建一个库 module 用于单独存放对外开放的库项目,首先在 Project 下的 build.gradle 文件中引入 bintray-release 插件的依赖:

1buildscript {
2    repositories {
3        google()
4        jcenter()
5    }
6    dependencies {
7        classpath 'com.android.tools.build:gradle:3.0.1'
8        //bintray-release插件
9        classpath 'com.novoda:bintray-release:0.8.0'
10    }
11}

可以在配置编码格式为 UTF-8 来防止编译上传过程中出错,也可以设置忽略对 doc 文档的不规范检查,设置如下:

1allprojects {
2    repositories {
3        google()
4        jcenter()
5    }
6    tasks.withType(Javadoc){
7        //不对生成的doc文档进行检查
8        options.addStringOption('Xdoclint:none''-quiet')
9        //设置编码格式
10        options.addStringOption('encoding''UTF-8')
11    }
12}

然后在库 module 下的 build.gradle 文件中引入 bintray-release 插件:

1apply plugin: 'com.novoda.bintray-release'

注意 bintray-release 插件一定要在 com.android.library 插件之后引入,否则最后上传的时候虽然会提示上传成功,但实际上没有上传成功,报错信息如下:

1:mdatepicker:xxx
2:mdatepicker:xxx
3//报错信息
4:mdatepicker:bintrayUpload: Could not find publication: release.
5
6BUILD SUCCESSFUL in 45s

然后在名为 publish 的 Task 中定义上传库项目的关键信息如下:

1publish{
2    //bintray.com的用户名
3    userOrg = 'jzman'
4    //一般写包名
5    groupId = 'com.manu'
6    //指定仓库名称
7//    repo = "maven"
8    //项目名称
9    artifactId = 'MDatePicker'
10    //版本号
11    publishVersion = '1.0.0'
12    //项目描述
13    desc = 'a goog date picker'
14    //项目网址
15    website = 'https://github.com/jzmanu/MDatePickerSample'
16}

然后就可以进行库项目的上传了。

上传库项目

上传之前需要先获取 API Key ,按照图示选择 Edit Profile:

jcenter03.PNG

然后选择 API Key,填写用户密码获取 API Key:

jcenter04.PNG

获取到 API KEY 之后使用如下上传命令进行上传:

1gradlew clean build bintrayUpload -PbintrayUser=用户名 -PbintrayKey=API KEY -PdryRun=false

上传成功之后日志如下:

1//...
2:mdatepicker:releaseAndroidJavadocsJar
3:mdatepicker:releaseAndroidSourcesJar
4:mdatepicker:publishReleasePublicationToMavenLocal
5:mdatepicker:bintrayUpload
6
7BUILD SUCCESSFUL in 45s

添加到JCenter

上传成功之后就可以打开项目详情,选择 Add to JCenter 就可以申请添加到 JCenter 了,如下图所示:

jcenter05.PNG

然后就可以使用通过依赖的方式直接使用该库项目了,如下:

1compile 'com.manu:MDatePicker:1.0.0'

遇到的问题

遇到的问题大部分都在上文中介绍了,还有一点需要注意的是如果出现如下错误:

1A problem occurred configuring project ':app'.
2> Failed to notify project evaluation listener.
3com.novoda.gradle.release.AndroidLibrary$LibraryUsage.getDependencyConstraints()Ljava/util/Set;

建议检查自己的 gradle 版本,我用的时 4.6 要修改成 4.4,gradle 插件的版本也要相应的降低,

1//gradle插件版本
2classpath 'com.android.tools.build:gradle:3.0.1'
3//gradle版本
4distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip

这样就可以开源自己的库了,进步很简单就是不断的去实践、去学习,可在公众号回复关键字【加群】邀你进Android交流群。

推荐阅读

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存